import Vue from 'vue'
import VueRouter from 'vue-router'
// 引入登录组件
import Login from '../components/Login.vue'
// 登陆后的主页
import Home from '../components/Home.vue'
// 引入Welcome欢迎页组件
import Welcome from '../components/Welcome.vue'
// 导入订单列表组件
import Orders from '../components/order/Orders.vue'
// 导入商品分类组件
import Categories from '../components/product/Categories.vue'
// 导入商品列表组件
import Goods from '../components/product/Goods.vue'
// 导入分类参数组件
import Params from '../components/product/Params.vue'
// 导入角色列表组件
import Roles from '../components/role/Roles.vue'
// 导入权限列表组件
import Rights from '../components/role/Rights.vue'
// 导入用户列表组件
import Users from '../components/user/Users.vue'
// 导入数据报表列表组件
import Reports from '../components/report/Reports.vue'

Vue.use(VueRouter)

const routes = []

const router = new VueRouter({
	routes: [
		//配置路由，设置登录组件访问路径
		{
			path: '/',
			redirect: '/login'
		},
		{
			path: '/login',
			component: Login
		},
		// 登陆成功后的主页
		{
			path: '/home',
			component: Home,
			redirect: '/welcome',
			children: [
				// 将Welocme组件设置为home的子路径，这样可以将welcome组件嵌套在home中
				{
					path: '/welcome',
					component: Welcome
				},
				// 跳转至用户列表
				{
					path: '/users',
					component: Users
				},
				// 跳转至角色列表
				{
					path: '/roles',
					component: Roles
				},
				// 跳转至权限列表
				{
					path: '/rights',
					component: Rights
				},
				// 跳转至商品列表
				{
					path: '/goods',
					component: Goods
				},
				// 跳转至分类参数
				{
					path: '/params',
					component: Params
				},
				// 跳转至商品分类
				{
					path: '/categories',
					component: Categories
				},
				// 跳转至数据报表
				{
					path: '/reports',
					component: Reports
				},
				// 跳转至订单列表
				{
					path: '/orders',
					component: Orders
				}
			],
		}
	]
})

/**
 * 挂载路由导航首位（拦截器拦截登录）
 * @param to  	将要访问的路径
 * @param from  代表从哪个路径跳转而来
 * @param next  next是一个函数表示放行，
 * 				两种方式：1. next(); 放行	next("跳转路径")	 强制跳转
 */
router.beforeEach((to, from, next) => {
	// 如果访问的是登录页不进行拦截直接放行
	if (to.path === '/login') return next();
	// 如果不是登录页，就获取 sessionStorage 中是否有 token
	const tokenStr = window.sessionStorage.getItem('token');
	// 如果token为空代表没有登录，直接跳转至登录页
	if (!tokenStr) return next('/login');
	// 如果token存在，直接放行
	next();
})

export default router
